      SUBROUTINE  DMATR(M,C,NX,Y,IPO)                                   00010000
CCC       ESTIMATION OF THE EIGENVALUES OF THE SPHEROIDAL FUNCTIONS     00020000
CCC       BY THE MATRIX METHOD OF D.B. HODGE (1970)                     00030000
CCC       REAL VARIABLE 'C'                                             00040000
CCC       REQUIRED SUBROUTINE  -  DEIGEN                                00050000
CCC
      IMPLICIT REAL*8(A-H,O-Z)                                          00060000
      DIMENSION Y(1),D(60),E(60),F(60),AMT(1860)                        00070000
      A(M,NR,C)=(2*M+NR+2.)*(2*M+NR+1.)/(2*M+2*NR+3.)/(2*M+2*NR+5.)*C   00080000
      B(M,NR,C)=(2*(M+NR)*(M+NR+1.)-2*M*M-1.)*C/(2*M+2*NR-1.)/          00090000
     +          (2*M+2*NR+3.)+(M+NR)*(M+NR+1.)                          00100001
      CN(M,NR,C)=NR*(NR-1.)*C/(2*M+2*NR-3.)/(2*M+2*NR-1.)               00110000
C                                                                       00120001
      N=NX+IDINT(C)                                                     00130000
      NL=(N+2)/2                                                        00140000
      CC=C*C*IPO                                                        00150000
      IS=0                                                              00160000
       IF (NL.LE.60) GO TO 5                                            00170001
      PRINT 100                                                         00180000
      RETURN                                                            00190000
  100 FORMAT ('SUBROUTINE <DMATR> RETURNED WITH NO CALCULATIONS')       00200002
    5 CONTINUE                                                          00210000
      DO 10 I=1,NL                                                      00220000
      I2=2*(I-1)+IS                                                     00230000
      D(I)=CN(M,I2,CC)                                                  00240000
      E(I)=B(M,I2,CC)                                                   00250000
      F(I)=A(M,I2,CC)                                                   00260000
   10 CONTINUE                                                          00270000
      MX=NL*(NL+1)/2                                                    00280000
      DO 15 K=1,MX                                                      00290000
      AMT(K)=0.                                                         00300000
   15 CONTINUE                                                          00310000
      AMT(1)=E(1)                                                       00320000
      L=1                                                               00330000
      DO 20 K=2,NL                                                      00340000
      L=L+K                                                             00350000
      AMT(L-1)=DSQRT(D(K)*F(K-1))                                       00360000
      AMT(L)=E(K)                                                       00370000
   20 CONTINUE                                                          00380000
         CALL DEIGEN (AMT,R,NL,1)                                       00390001
      L=MX                                                              00400000
      LL=1+IS                                                           00410000
      DO 30 I=1,NL                                                      00420000
      IF (LL.GT.NX+1) GO TO 35                                          00430000
      Y(LL)=AMT(L)                                                      00440000
      LL=LL+2                                                           00450000
      L=L-NL+I-1                                                        00460000
   30 CONTINUE                                                          00470000
   35 CONTINUE                                                          00480000
      IF (IS.EQ.1) GO TO 40                                             00490000
      IS=1                                                              00500000
      GO TO 5                                                           00510000
   40 CONTINUE                                                          00520000
      RETURN                                                            00530000
      END                                                               00540000
